public class Solution {
    public String gcdOfStrings(String str1, String str2) {
        int len1 = str1.length();
        int len2 = str2.length();
        for (int i = Math.min(len1, len2); i >= 1; i--) {
            if (len1 % i == 0 && len2 % i == 0 && str1.substring(0, i).equals(str2.substring(0, i)) && check(str2, i) && check(str1, i)) {
                // 上面的思路有点问题，丢掉了判断子串是否相等。
                return str1.substring(0, i);
            }
        }
        return "";
    }

    public static boolean check(String str, int n) {
        int a = str.length() / n;
        for (int i = 1; i < a; i++) {
            for (int j = 0; j < n; j++) {
                if (str.charAt(j) != str.charAt(i*n+j)) {  // 这里注意charat用法
                    return false;
                }
            }
        }
        return true;
    }
    
}


// 希望你开心点，一起加油！
/*
     _--_  _--_
    -    \/    -
     -        -
       -    -
         -
*/
